/**
 * @file Alumno.java
 * @brief Clase Alumno
 * @author Pablo Torres Alba
 * @date Mayo 2013
 */
package sgeb;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class Entrenador extends Persona {

    private Integer persona_id;

    /*Constructor por defecto*/
    public Entrenador() {
    }

    /*Constructor*/
    public Entrenador(Integer persona_id) {
	this.persona_id = persona_id;
    }

    /*Constructor con parametros*/
    public Entrenador(String dni, String nombre, String apellidos, Date fechaNacimiento, String direccion, String localidad, String provincia, int cp, Date fechaIngreso, int telFijo, int telMovil, String correo) {
	this.setDni(dni);	                      //DNI del tutor
	this.setNombre(nombre);                     //Nombre
	this.setApellidos(apellidos);               //Apellidos
	this.setCorreo(correo);                     //Correo Electronico
	this.setCp(cp);                             //Codigo Postal
	this.setDireccion(direccion);               //Dirección
	this.setFechaIngreso(fechaIngreso);         //Fecha ingreso
	this.setFechaNacimiento(fechaNacimiento);   //Fecha Nacimiento
	this.setLocalidad(localidad);               //Localidad
	this.setProvincia(provincia);               //Provincia
	this.setTefFijo(telFijo);                   //Telefono Fijo
	this.setTefMovil(telMovil);                 //Telefono Movil
    }

    /*Constructor que btiene los datos de un entrenador de la BD*/
    public Entrenador(String dni) {
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "SELECT * FROM persona,entrenador WHERE persona.dni='" + dni + "' and entrenador.persona_id=persona.id";
	    Statement st = cn.createStatement();
	    ResultSet rs = st.executeQuery(sql);
	    System.out.println(sql);
	    while (rs.next()) {
		this.setEntrenadorID(rs.getInt("persona.id"));
		this.setDni(rs.getString("persona.dni"));
		this.setNombre(rs.getString("persona.nombre"));
		this.setApellidos(rs.getString("persona.apellidos"));
		this.setCorreo(rs.getString("persona.correo"));
		this.setCp(rs.getInt("persona.cp"));
		this.setDireccion(rs.getString("persona.direccion"));
		this.setFechaIngreso(rs.getDate("persona.fechaIngreso"));
		this.setFechaNacimiento(rs.getDate("persona.fechaNacimiento"));
		this.setLocalidad(rs.getString("persona.localidad"));
		this.setProvincia(rs.getString("persona.provincia"));
		this.setTefFijo(rs.getInt("persona.telFijo"));
		this.setTefMovil(rs.getInt("persona.telMovil"));
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	}
    }

    public String[][] GetEntrenadores() {
	String[][] entrenadores = null;

	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "SELECT * FROM persona,entrenador WHERE entrenador.persona_id=persona.id";
	    Statement st = cn.createStatement();
	    ResultSet rs = st.executeQuery(sql);
	    int contador = 0;
	    while (rs.next()) {
		contador++;
	    }
	    rs.first();
	    entrenadores = new String[contador][2];
	    System.out.println(sql);
	    contador = 0;

	    while (rs.next()) {
		if (contador == 0) {
		    rs.first();
		}
		entrenadores[contador][0] = (rs.getString("persona.id"));
		entrenadores[contador][1] = (rs.getString("persona.nombre") + " " + rs.getString("persona.apellidos"));
		contador++;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	}
	return entrenadores;
    }

    /**
     * Elimnina de la bd a un entrenador
     *
     * @param id identificador del alumno a borrar
     * @return true si no ha habido ningún error
     * @author Borja Molina
     */
    public boolean bajaEntrenador(String dni) {
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "delete FROM persona WHERE persona.dni='" + dni + "'";
	    System.out.println(sql);
	    Statement stm = cn.createStatement();
	    stm.executeUpdate(sql);
	    return true;
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	    return false;
	}
    }

    /**
     * Modifica un alumno
     */
    public boolean modificarEntrenador(String dni, String nombre, String apellidos, Date fechaNacimiento, String direccion, String localidad, String provincia, int cp, int telFijo, int telMovil, String correo) {
	try {

	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "update persona ";
	    sql += "set nombre='" + nombre + "', ";
	    sql += "apellidos='" + apellidos + "', ";
	    //sql+="set fechaNacimiento="+"'2000-10-10'"+" ";
	    sql += "direccion='" + direccion + "', ";
	    sql += "localidad='" + localidad + "', ";
	    sql += "provincia='" + provincia + "', ";
	    sql += "cp=" + cp + ", ";
	    sql += "telFijo=" + telFijo + ", ";
	    sql += "telMovil=" + telMovil + ", ";
	    sql += "correo='" + correo + "'";
	    sql += "where persona.dni='" + dni + "'";
	    System.out.println(sql);
	    Statement stm = cn.createStatement();
	    stm.executeUpdate(sql);

	    return true;
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	    return false;
	}
    }

    /*Devuelve el ID de un alumno*/
    public Integer getEntrenadorID() {
	return this.persona_id;
    }

    /*Asigna un ID a un alumno*/
    public void setEntrenadorID(Integer persona_id) {
	this.persona_id = persona_id;
    }

    /**
     * Guarda un alumno en la bd
     *
     * @return El identificador único del alumno insertado
     * @author Borja Molina
     */
    public int guardarEnt() {
	int id = this.guardarPer(this.getDni(), this.getNombre(), this.getApellidos(), this.getFechaNacimiento(), this.getDireccion(), this.getLocalidad(), this.getProvincia(), this.getCp(), this.getFechaIngreso(), this.getTefFijo(), this.getTefMovil(), this.getCorreo(), "NE");
	conectar cc = new conectar();
	Connection cn = cc.conexion();
	String sql = "INSERT INTO entrenador (persona_id) VALUES (?)";
	try {
	    PreparedStatement pst = cn.prepareStatement(sql);
	    // TODO add your handling code here:
	    pst.setInt(1, id);

	    int n = pst.executeUpdate();

	    if (n > 0) {
		//JOptionPane.showMessageDialog(null, "Entrenador guardado");
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Alumno.class.getName()).log(Level.SEVERE, null, ex);
	}
	return id;

    }
}
